<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vuex"></script>
<!-- <script src="../js/store.js"></script> -->
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
  </div>
  <script>
    // console.log(Vuex.mapState)
    // ...
    // computed: mapState({
    //   // 箭头函数可使代码更简练
    //   count: state => state.count,

    //   // 传字符串参数 'count' 等同于 `state => state.count`
    //   countAlias: 'count',

    //   // 为了能够使用 `this` 获取局部状态，必须使用常规函数
    //   countPlusLocalState (state) {
    //     return state.count + this.localCount
    //   }
    // })
    const store = new Vuex.Store({
       state:{
         count: 11,
         message: '你好2'
       },
       mutations:{
         increment (state) {
           state.count++
         }
       }
    })

    const Counter = {
      template: '<div>{{ count }} {{message}} </div>',
      // data() {
      //   return {
      //     num : 6
      //   }
      // },
      // ===========
      // computed: {
      //   count () {
      //     return  store.state.count
      //   }
      // }
      // ============
    //  computed: Vuex.mapState(['count']) // 第一种用法
        computed: Vuex.mapState({ // 第2种用法
          count: 'count',
          message: 'message'
        })
    //  
      // computed: {
      //    sayHi(){ return 'sayHI' },
      //    ...Vuex.mapState({
      //       title: 'count',  // 变量重命名
      //       count: 'count',
      //       message: 'message',  // 第二种方法
      //       // count:(state) => state.count,
      //       // message: function(state){ return state.message}
      //       totalcount:function(state){
      //         return this.num + state.count
      //       }
      //   })
      // }
    }
    const app = new Vue({
      el: '#app',
      // 把 store 对象提供给 “store” 选项，这可以把 store 的实例注入所有的子组件
      store,
      components: { Counter },
      template: `
      <div class="app"><counter></counter></div>
      `  
    })
    
  </script>
</body>

</html>